using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using FiltronASP.Models.DAO.Interfaces;
using FiltronASP.Models.DAO;
using FiltronASP.Models;

namespace FiltronASP.Areas.Admin.Helpers.Permissions
{
    public class PermissionHelper
    {

        /// <summary>
        /// Metoda do sprawdzania czy wersja jezykowa jest dostepna dla uzytkownika.
        /// </summary>
        /// <param name="userId">uzytkownik</param>
        /// <param name="languageId">jezyk</param>
        /// <returns>true, gdy wybrany</returns>
        public static bool IsUserLanguageAvailable(int? userId, int? languageId)
        {
            if (!userId.HasValue)
            {
                return false;
            }   //if
            if (!languageId.HasValue)
            {
                return false;
            }   //if
            IUserLanguageDAO userLanguageDAO = new UserLanguageDAO();
            return (userLanguageDAO.FindByUserIdAndLanguageId(userId, languageId) != null);
        }

        /// <summary>
        /// Metoda do sprawdzania czy grupa stron jest dostepna dla uzytkownika.
        /// </summary>
        /// <param name="userId">uzytkownik</param>
        /// <param name="pageTypeId">grupa stron</param>
        /// <returns>true, gdy wybrany</returns>
        public static bool IsUserPageTypeAvailable(int? userId, int? pageTypeId)
        {
            if (!userId.HasValue)
            {
                return false;
            }   //if
            if (!pageTypeId.HasValue)
            {
                return false;
            }   //if
            IUserPageTypeDAO userPageTypeDAO = new UserPageTypeDAO();
            return (userPageTypeDAO.FindByUserIdAndPageTypeId(userId, pageTypeId) != null);
        }

        /// <summary>
        /// Metoda do sprawdzania czy uzytkownik ma uprawnienia administratora.
        /// </summary>
        /// <param name="userId">uzytkownik</param>
        /// <returns>true, gdy wybrany</returns>
        public static bool HasUserGlobalPermissionAccess(int? userId)
        {
            if (!userId.HasValue)
            {
                return false;
            }   //if
            IUserDAO userDAO = new UserDAO();
            User user = userDAO.FindByPK(userId.Value);
            if (user == null)
            {
                return false;
            }   //if
            if (!user.user_permission_access.HasValue)
            {
                return false;
            }   //if
            return (user.user_permission_access.Value);
        }

    }
}
